"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/3/18 9:00
@Description : 
线程的状态：
    1. 创建
    2. 可运行   start   抢占cpu的运行时间   0.1s     1
        阻塞
    3. 运行  执行任务  0.1s
    4. 销毁  任务执行结束

线程执行完成任务 -> 销毁     新任务 -> 创建新的线程 线程的利用率低
频繁创建和销毁线程 消耗计算机性能   线程可以复用

引入线程池 解决频繁创建和销毁线程的操作
1.任务的执行可以交给线程池，线程使用完毕后将线程归还线程池，实现线程的复用
2.线程池中的线程任务执行完毕后，会将任务的返回结果返回

"""
import threading
from concurrent.futures import ThreadPoolExecutor


# 任务
def add(a, b):
    return a + b


"""
# 线程无法复用
for i in range(5):
    threading.Thread(target=add,args=(1,2)).start()
"""
# 创建线程池对象  max_workers=5  最大线程数
thread_pool = ThreadPoolExecutor(max_workers=5)
# 通过线程池执行任务  add 需要执行的任务   任务需要的参数
futures = []
for i in range(10):
    future = thread_pool.submit(add, i, 2)
    futures.append(future)

# 遍历线程执行的结果
for future in futures:
    print(future.result())
